package org.korifey.ffbdd.api;

public interface IBddBackend {	
	
	public INode getNode(int index);
	
	public void setMark(int index, boolean mark);
	
	
	//Node creation	
	public <E> ITerminal<E> insertTerminal(E value);
	
	public INode insertNonterminal(int var, INode one, INode zero);
	
	
	//Statistics
	public int getTerminalsNumber();
	
	public int getNonterminalsNumber();
	
	public int getMaxTerminals();
	
	public int getMaxNonterminals();
	
	
	//Garbage collect unmarked nodes
	public void gc(); 
}
